protected void impBtn_Click(object sender, EventArgs e) { Flow flow = new Flow(this.FK_Flow); GERpt rpt = flow.HisGERpt; rpt.RetrieveByAttr(GERptAttr.OID, this.WorkID); string zhiduNo = rpt.GetValStringByKey("ZhiDuNo"); string filePath = AppDomain.CurrentDomain.BaseDirectory + ("/DataUser/OfficeFile/" + this.FK_Flow + "/" + this.WorkID + ".doc"); if (!File.Exists(filePath)) { filePath = AppDomain.CurrentDomain.BaseDirectory + ("/DataUser/OfficeFile/" + this.FK_Flow + "/" + this.WorkID + ".docx"); } string url = BP.Sys.SystemConfig.AppSettings["BaseUrl"] + "/ZhiDu/UploadHander.ashx?zhiduNo=" + zhiduNo + "&IsSendXCBank=0"; byte[] result = null; using (WebClient client = new WebClient()) { client.Headers.Add(HttpRequestHeader.ContentType, "application/octet-stream"); // wc.Headers.Add(HttpRequestHeader.UserAgent, "Mwwozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"); client.Headers.Add("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"); result = client.UploadFile(url, "POST", filePath); } LoadMenu(true); }
/// <summary> /// 设置父子关系. /// </summary> /// <returns></returns> public string RefBill_Done() { try { string frmID = this.GetRequestVal("FrmID"); Int64 workID = this.GetRequestValInt64("WorkID"); GERpt rpt = new GERpt(frmID, workID); string pFrmID = this.GetRequestVal("PFrmID"); Int64 pWorkID = this.GetRequestValInt64("PWorkID"); //把数据copy到当前的子表单里. GERpt rptP = new GERpt(pFrmID, pWorkID); rpt.Copy(rptP); rpt.PWorkID = pWorkID; rpt.SetValByKey("PFrmID", pFrmID); rpt.Update(); //更新控制表,设置父子关系. GenerBill gbill = new GenerBill(workID); gbill.PFrmID = pFrmID; gbill.PWorkID = pWorkID; gbill.Update(); return("执行成功"); } catch (Exception ex) { return("err@" + ex.Message); } }
private void LoadAttachment() { string EnName = "ND" + this.FK_Node; BP.Sys.MapData mapdata = new BP.Sys.MapData(EnName); FrmAttachments attachments = new BP.Sys.FrmAttachments(); attachments = mapdata.FrmAttachments; bool isCompleate = false; BP.WF.Node node = new BP.WF.Node(FK_Node); try { WorkFlow workFlow = new WorkFlow(node.FK_Flow, WorkID); isCompleate = workFlow.IsComplete; } catch (Exception) { try { Flow fl = new Flow(node.FK_Flow); GERpt rpt = fl.HisGERpt; rpt.OID = WorkID; rpt.Retrieve(); if (rpt != null) { if (rpt.WFState == WFState.Complete) { isCompleate = true; } } } catch (Exception ex) { } } foreach (FrmAttachment ath in attachments) { string src = ""; if (!isCompleate) { src = CCFlowAppPath + "WF/CCForm/AttachmentUpload.aspx?PKVal=" + this.WorkID + "&Ath=" + ath.NoOfObj + "&FK_MapData=" + EnName + "&FK_FrmAttachment=" + ath.MyPK + "&FK_Node=" + this.FK_Node; } else { src = CCFlowAppPath + "WF/CCForm/AttachmentUpload.aspx?PKVal=" + this.WorkID + "&Ath=" + ath.NoOfObj + "&FK_MapData=" + EnName + "&FK_FrmAttachment=" + ath.MyPK + "&FK_Node=" + this.FK_Node + "&IsReadonly=1"; } this.Pub1.Add("<iframe ID='F" + ath.MyPK + "' src='" + src + "' frameborder=0 style='position:absolute;width:" + ath.W + "px; height:" + ath.H + "px;text-align: left;' leftMargin='0' topMargin='0' scrolling=auto /></iframe>"); } }
/// <summary> /// 条件 /// </summary> /// <param name="ct">类型</param> /// <param name="nodeID">节点</param> public Conds(CondType ct, int nodeID, Int64 workid, GERpt enData) { this.NodeID = nodeID; this.Retrieve(CondAttr.NodeID, nodeID, CondAttr.CondType, (int)ct, CondAttr.PRI); foreach (Cond en in this) { en.WorkID = workid; en.en = enData; } }
/// <summary> /// 检查节点是否是启用接收人选择器 /// </summary> /// <returns></returns> private string CheckAccepterOper() { int tempToNodeID = 0; //获取到当前节点 Node _HisNode = new Node(this.FK_Node); /*如果到达的点为空 */ Nodes nds = _HisNode.HisToNodes; if (nds.Count == 0) { //当前点是最后的一个节点,不能使用此功能 return("end"); } else if (nds.Count == 1) { BP.WF.Node toND = nds[0] as BP.WF.Node; tempToNodeID = toND.NodeID; } else { foreach (BP.WF.Node mynd in nds) { //if (mynd.HisDeliveryWay != DeliveryWay.BySelected) // continue; GERpt _wk = _HisNode.HisFlow.HisGERpt; _wk.OID = this.WorkID; _wk.Retrieve(); _wk.ResetDefaultVal(); #region 过滤不能到达的节点. Cond cond = new Cond(); int i = cond.Retrieve(CondAttr.FK_Node, _HisNode.NodeID, CondAttr.ToNodeID, mynd.NodeID); if (i == 0) { continue; // 没有设置方向条件,就让它跳过去。 } cond.WorkID = this.WorkID; cond.en = _wk; if (cond.IsPassed == false) { continue; } #endregion 过滤不能到达的节点. tempToNodeID = mynd.NodeID; } } //不存在下一个节点,检查是否配置了有用户选择节点 if (tempToNodeID == 0) { try { //检查必填项 BP.WF.WorkNode workeNode = new WorkNode(this.WorkID, this.FK_Node); workeNode.CheckFrmIsNotNull(); } catch (Exception ex) { return("error:" + ex.Message); } //按照用户选择计算 if (_HisNode.CondModel == CondModel.ByUserSelected) { return("byuserselected"); } return("notonode"); } //判断到达的节点是否是按接受人选择 Node toNode = new Node(tempToNodeID); if (toNode.HisDeliveryWay == DeliveryWay.BySelected) { return("byselected"); } return("nodata"); }
protected void Page_Load(object sender, EventArgs e) { this.Page.RegisterClientScriptBlock("s", "<link href='/WF/Comm/Style/Table" + BP.Web.WebUser.Style + ".css' rel='stylesheet' type='text/css' />"); string sql = "SELECT a.* ,b.FK_Flow,b.FK_Node,b.FlowName,b.NodeName,b.IsRead,b.Starter,b.ADT,b.SDT,b.WorkID FROM ND22Rpt" + " a , WF_EmpWorks b WHERE a.OID=B.WorkID AND b.WFState not in (7)" + " AND b.FK_Emp='" + WebUser.No + "'"; DataTable dt = BP.DA.DBAccess.RunSQLReturnTable(sql); int gIdx = 0; string thStyle = "style='font-size: 12px;border: 1px solid #C2D5E3;text-align: center;height: 25px;line-height: 25px;color: #336699;white-space: nowrap;padding: 0 2px;'"; string tdStyle = "style='border: 1px solid #D6DDE6;padding: 4px;text-align: left;background-color: #FFFFFF; color: #333333;'"; this.monthReport.AddTable("style='width:100%;border:1px solid #CCCCCC;padding: inherit;margin: 0;margin-bottom: 0px;border-collapse:collapse;align=center'"); //添加标题 this.monthReport.Add("<thead>"); this.monthReport.AddTR("style='width:100%;border:1px solid #C2D5E3;padding: inherit;margin: 0;margin-bottom: 0px;border-collapse:collapse;align=center'"); this.monthReport.AddTDTitle(thStyle + " width='5%'", "序号"); this.monthReport.AddTDTitle(thStyle + " width='10%'", "计划项目类别"); this.monthReport.AddTDTitle(thStyle + " width='10%'", "工作项目"); this.monthReport.AddTDTitle(thStyle, "工作内容及要求"); this.monthReport.AddTDTitle(thStyle + " width='10%'", "完成时间"); this.monthReport.AddTDTitle(thStyle + " width='10%'", "责任部门"); this.monthReport.AddTDTitle(thStyle + " width='10%'", "配合部门"); this.monthReport.AddTDTitle(thStyle + " width='10%'", "检查部门"); this.monthReport.AddTREnd(); this.monthReport.Add("</thead>"); Flow flow = new Flow("022"); GERpt rpt = flow.HisGERpt; foreach (DataRow row in dt.Rows) { rpt.OID = int.Parse(row["WorkID"].ToString()); rpt.Retrieve(); if (rpt != null) { gIdx++; this.monthReport.AddTR("style='height:80px;text-align:center;border:1px solid #D6DDE6;padding: inherit;margin: 0;margin-bottom: 0px;border-collapse:collapse;'"); this.monthReport.AddTD("style='text-align:center;border: 1px solid #D6DDE6;padding: 4px;background-color: #FFFFFF; color: #333333;'", gIdx); this.monthReport.AddTD(tdStyle, rpt.GetValByKey("SF_PlanItemText").ToString()); this.monthReport.AddTD(tdStyle, row["GongZuoXiangMu"].ToString()); this.monthReport.AddTD(tdStyle, "<p>" + row["GZNRJYQ"].ToString() + "</p>"); this.monthReport.AddTD(tdStyle, row["WanChengShiJian"].ToString()); this.monthReport.AddTD(tdStyle, rpt.GetValByKey("SF_ZRBMText").ToString()); this.monthReport.AddTD(tdStyle, row["PeiHeBuMen"].ToString()); this.monthReport.AddTD(tdStyle, rpt.GetValByKey("SF_JCBMText").ToString()); this.monthReport.AddTREnd(); } } this.monthReport.AddTableEnd(); string request = Request.QueryString["exporttype"]; if (!string.IsNullOrEmpty(request)) { if (request == "xls") { exportexcel(); } if (request == "doc") { exportword(); } } }
/// <summary> /// 恢复已完成的流程数据到指定的节点,如果节点为0就恢复到最后一个完成的节点上去. /// </summary> /// <param name="workid">要恢复的workid</param> /// <param name="backToNodeID">恢复到的节点编号,如果是0,标示回复到流程最后一个节点上去.</param> /// <param name="note"></param> /// <returns></returns> public string DoRebackFlowData(Int64 workid, int backToNodeID, string note) { if (note.Length <= 2) { return("请填写恢复已完成的流程原因."); } Flow fl = new Flow(this.No); GERpt rpt = new GERpt("ND" + int.Parse(this.No) + "Rpt"); rpt.OID = workid; int i = rpt.RetrieveFromDBSources(); if (i == 0) { throw new Exception("@错误,流程数据丢失。"); } if (backToNodeID == 0) { backToNodeID = rpt.FlowEndNode; } Emp empStarter = new Emp(rpt.FlowStarter); // 最后一个节点. Node endN = new Node(backToNodeID); GenerWorkFlow gwf = null; try { #region 创建流程引擎主表数据. gwf = new GenerWorkFlow(); gwf.WorkID = workid; if (gwf.RetrieveFromDBSources() == 1) { throw new Exception("@当前工作ID为:" + workid + "的流程没有结束,不能采用此方法恢复。"); } gwf.FK_Flow = this.No; gwf.FlowName = this.Name; gwf.WorkID = workid; gwf.PWorkID = rpt.PWorkID; gwf.PFlowNo = rpt.PFlowNo; gwf.FK_Node = backToNodeID; gwf.NodeName = endN.Name; gwf.Starter = rpt.FlowStarter; gwf.StarterName = empStarter.Name; gwf.FK_FlowSort = fl.FK_FlowSort; gwf.Title = rpt.Title; gwf.WFState = WFState.ReturnSta; /*设置为退回的状态*/ gwf.FK_Dept = rpt.FK_Dept; Dept dept = new Dept(empStarter.FK_Dept); gwf.DeptName = dept.Name; gwf.PRI = 1; DateTime dttime = DateTime.Now; dttime = dttime.AddDays(3); gwf.SDTOfNode = dttime.ToString("yyyy-MM-dd"); gwf.SDTOfFlow = dttime.ToString("yyyy-MM-dd"); gwf.Insert(); /*插入流程引擎数据.*/ #endregion 创建流程引擎主表数据 int startNode = int.Parse(this.No + "01"); string ndTrack = "ND" + int.Parse(this.No) + "Track"; string actionType = (int)ActionType.Forward + "," + (int)ActionType.FlowOver + "," + (int)ActionType.ForwardFL + "," + (int)ActionType.ForwardHL; // string actionType = " NDFrom=" + (int)ActionType.Forward + " OR NDFrom=" + (int)ActionType.FlowOver + " OR NDFrom=" + (int)ActionType.ForwardFL + " OR NDFrom=" + (int)ActionType.ForwardHL; string sql = "SELECT * FROM " + ndTrack + " WHERE ActionType IN (" + actionType + ") and WorkID=" + workid + " ORDER BY RDT DESC, NDFrom "; System.Data.DataTable dt = DBAccess.RunSQLReturnTable(sql); if (dt.Rows.Count == 0) { throw new Exception("@工作ID为:" + workid + "的数据不存在."); } string starter = ""; bool isMeetSpecNode = false; GenerWorkerList currWl = new GenerWorkerList(); foreach (DataRow dr in dt.Rows) { int ndFrom = int.Parse(dr["NDFrom"].ToString()); Node nd = new Node(ndFrom); string ndFromT = dr["NDFromT"].ToString(); string EmpFrom = dr[TrackAttr.EmpFrom].ToString(); string EmpFromT = dr[TrackAttr.EmpFromT].ToString(); // 增加上 工作人员的信息. GenerWorkerList gwl = new GenerWorkerList(); gwl.WorkID = workid; gwl.FK_Flow = this.No; gwl.FK_Node = ndFrom; gwl.FK_NodeText = ndFromT; if (gwl.FK_Node == backToNodeID) { gwl.IsPass = false; currWl = gwl; } gwl.FK_Emp = EmpFrom; gwl.FK_EmpText = EmpFromT; if (gwl.IsExits) { continue; /*有可能是反复退回的情况.*/ } Emp emp = new Emp(gwl.FK_Emp); gwl.FK_Dept1 = emp.FK_Dept; gwl.RDT = dr["RDT"].ToString(); gwl.SDT = dr["RDT"].ToString(); gwl.DTOfWarning = gwf.SDTOfNode; gwl.WarningDays = nd.WarningDays; gwl.IsEnable = true; gwl.WhoExeIt = nd.WhoExeIt; gwl.Insert(); } #region 加入退回信息, 让接受人能够看到退回原因. ReturnWork rw = new ReturnWork(); rw.WorkID = workid; rw.ReturnNode = backToNodeID; rw.ReturnNodeName = endN.Name; rw.Returner = WebUser.No; rw.ReturnerName = WebUser.Name; rw.ReturnToNode = currWl.FK_Node; rw.ReturnToEmp = currWl.FK_Emp; rw.Note = note; rw.RDT = DataType.CurrentDataTime; rw.IsBackTracking = false; rw.MyPK = BP.DA.DBAccess.GenerGUID(); #endregion 加入退回信息, 让接受人能够看到退回原因. //更新流程表的状态. rpt.FlowEnder = currWl.FK_Emp; rpt.WFState = WFState.ReturnSta; /*设置为退回的状态*/ rpt.FlowEndNode = currWl.FK_Node; rpt.Update(); // 向接受人发送一条消息. BP.WF.Dev2Interface.Port_SendMail(currWl.FK_Emp, "工作恢复:" + gwf.Title, "工作被:" + WebUser.No + " 恢复." + note, "ReBack" + workid, this.No, int.Parse(this.No + "01"), workid, 0); //写入该日志. WorkNode wn = new WorkNode(workid, currWl.FK_Node); wn.AddToTrack(ActionType.RebackOverFlow, currWl.FK_Emp, currWl.FK_EmpText, currWl.FK_Node, currWl.FK_NodeText, note); return("@已经还原成功,现在的流程已经复原到(" + currWl.FK_NodeText + "). @当前工作处理人为(" + currWl.FK_Emp + " , " + currWl.FK_EmpText + ") @请通知他处理工作."); } catch (Exception ex) { gwf.Delete(); GenerWorkerList wl = new GenerWorkerList(); wl.Delete(GenerWorkerListAttr.WorkID, workid); string sqls = ""; sqls += "@UPDATE " + fl.PTable + " SET WFState=" + (int)WFState.Complete + " WHERE OID=" + workid; DBAccess.RunSQLs(sqls); return("<font color=red>会滚期间出现错误</font><hr>" + ex.Message); } }
/// <summary> /// 说明 :此测试针对于演示环境中的 001 流程编写的单元测试代码。 /// 涉及到了: 创建,发送,撤销,方向条件、退回等功能。 /// </summary> public override void Do() { string fk_flow = "032"; string userNo = "zhanghaicheng"; Flow fl = new Flow(fk_flow); if (fl.DraftRole == DraftRole.None) { fl.DraftRole = DraftRole.SaveToDraftList; fl.Update(); //草稿列表. } // zhanghaicheng 登录. BP.WF.Dev2Interface.Port_Login(userNo); //创建空白工作. Int64 workid = BP.WF.Dev2Interface.Node_CreateBlankWork(fl.No); #region 检查创建新工作是否是blank状态. GERpt rpt = fl.HisGERpt; rpt.OID = workid; rpt.RetrieveFromDBSources(); if (rpt.WFState != WFState.Blank) { throw new Exception("@创建新工作应该是Blank状态,现在是:" + rpt.WFState); } GenerWorkFlow gwf = new GenerWorkFlow(); gwf.WorkID = workid; if (gwf.RetrieveFromDBSources() == 0) { throw new Exception("@创建workid没有写入到流程注册表."); } if (gwf.WFState != WFState.Blank) { throw new Exception("@流程注册表内的wfstate 不是空白状态,现在状态是:" + rpt.WFState); } #endregion //执行保存. BP.WF.Dev2Interface.Node_SaveWork(fl.No, 3201, workid); #region 检查创建新工作是否是blank状态. rpt = fl.HisGERpt; rpt.OID = workid; rpt.RetrieveFromDBSources(); if (rpt.WFState != WFState.Draft) { throw new Exception("@执行保存后应该是Draft状态,现在是:" + rpt.WFState); } #endregion #region 检查草稿是否有? bool isHave = false; DataTable dt = BP.WF.Dev2Interface.DB_GenerDraftDataTable(); foreach (DataRow dr in dt.Rows) { if (dr["OID"].ToString() == workid.ToString()) { isHave = true; break; } } if (isHave == true) { throw new Exception("@不应该找到草稿。"); } #endregion //删除草稿. BP.WF.Dev2Interface.Node_DeleteDraft(fl.No, workid); //执行创建工作,一个新的workid. Int64 workidNew = BP.WF.Dev2Interface.Node_CreateBlankWork(fl.No); //比较两个workid是否一致. if (workidNew == workid) { throw new Exception("@执行删除草稿失败."); } //设置成草稿. BP.WF.Dev2Interface.Node_SetDraft(fl.No, workid); #region 检查保存的草稿数据是否完整。 rpt = fl.HisGERpt; rpt.OID = workid; rpt.RetrieveFromDBSources(); if (rpt.WFState != WFState.Draft) { throw new Exception("@此 GERpt 应该是 Draft 状态,现在是:" + rpt.WFState); } isHave = false; dt = BP.WF.Dev2Interface.DB_GenerDraftDataTable(); foreach (DataRow dr in dt.Rows) { if (dr["OID"].ToString() == workid.ToString()) { isHave = true; break; } } if (isHave == false) { throw new Exception("@没有从接口里找到草稿。"); } #endregion }
protected void Page_Load(object sender, EventArgs e) { if (this.Request.QueryString["FK_Node"] == null) { // 如果没有接收到节点ID参数,就绑定当前人员可以执行批量审核的待办工作. int num = this.BindNodeList(); return; } BP.WF.Node nd = new BP.WF.Node(this.FK_Node); Flow fl = nd.HisFlow; string sql = ""; if (nd.HisRunModel == RunModel.SubThread) { sql = "SELECT a.*, b.Starter,b.ADT,b.WorkID FROM " + fl.PTable + " a , WF_EmpWorks b WHERE a.OID=B.FID AND b.WFState Not IN (7) AND b.FK_Node=" + nd.NodeID + " AND b.FK_Emp='" + WebUser.No + "'"; } else { sql = "SELECT a.*, b.Starter,b.ADT,b.WorkID FROM " + fl.PTable + " a , WF_EmpWorks b WHERE a.OID=B.WorkID AND b.WFState Not IN (7) AND b.FK_Node=" + nd.NodeID + " AND b.FK_Emp='" + WebUser.No + "'"; } // string sql = "SELECT Title,RDT,ADT,SDT,FID,WorkID,Starter FROM WF_EmpWorks WHERE FK_Emp='" + WebUser.No + "'"; DataTable dt = BP.DA.DBAccess.RunSQLReturnTable(sql); if (nd.HisBatchRole == BatchRole.None) { this.Pub1.AddFieldSetRed("错误", "节点(" + nd.Name + ")不能执行批量处理操作."); return; } string inSQL = "SELECT WorkID FROM WF_EmpWorks WHERE FK_Emp='" + WebUser.No + "' AND WFState!=7 AND FK_Node=" + this.FK_Node; Works wks = nd.HisWorks; wks.RetrieveInSQL(inSQL); BtnLab btnLab = new BtnLab(this.FK_Node); this.Pub1.AddTable("width='100%'"); //移动按钮位置 if (nd.HisBatchRole == BatchRole.Group) { this.Pub1.AddCaptionMsgLong("<a href='Batch.aspx'>返回</a> <input ID=\"btnGroup\" type=\"button\" value=\"合卷批复\" CssClass=\"Btn\" onclick=\"BatchGroup()\" />"); } else { this.Pub1.AddCaptionMsgLong(nd.FlowName + " - <a href='Batch.aspx'>返回</a>"); } #region 生成标题. this.Pub1.AddTR(); this.Pub1.AddTDTitle("序号"); string str1 = "<INPUT id='checkedAll' onclick='SelectAll()' text='选择' value='选择' type='checkbox' name='checkedAll'>"; this.Pub1.AddTDTitle("align='left'", str1 + "选择"); this.Pub1.AddTDTitle("标题"); this.Pub1.AddTDTitle("发起人"); this.Pub1.AddTDTitle("接受日期"); // 显示出来字段. BatchParas 的规则为 @字段中文名=fieldName@字段中文名1=fieldName1 MapAttrs attrs = new MapAttrs(this.FK_MapData); string[] strs = nd.BatchParas.Split(','); foreach (string str in strs) { if (string.IsNullOrEmpty(str) || str.Contains("@PFlowNo") == true) { continue; } foreach (MapAttr attr in attrs) { if (str != attr.KeyOfEn) { continue; } this.Pub1.AddTDTitle(attr.Name); } } this.Pub1.AddTREnd(); #endregion 生成标题. GERpt rpt = nd.HisFlow.HisGERpt; bool is1 = false; int idx = 0; foreach (Work wk in wks) { idx++; if (idx == nd.BatchListCount) { break; } #region 显示必要的列. is1 = this.Pub1.AddTR(is1); this.Pub1.AddTDIdx(idx); CheckBox cb = new CheckBox(); cb.ID = "CB_" + wk.OID.ToString(); foreach (DataRow dr in dt.Rows) { if (dr["WorkID"].ToString() != wk.OID.ToString()) { continue; } cb.Text = "选择"; this.Pub1.AddTD(cb); //this.Pub1.AddTD("<a href=\"javascript:WinOpen('MyFlow.aspx?WorkID=" + wk.OID + "&FK_Node=" + this.FK_Node + "&FK_Flow="+nd.FK_Flow+"','s')\" >" + dr["Title"].ToString() + "</a>"); this.Pub1.AddTD("<a href=\"javascript:WinOpen('FlowFormTree/Default.aspx?WorkID=" + wk.OID + "&FK_Node=" + this.FK_Node + "&IsSend=0&FK_Flow=" + nd.FK_Flow + "','s')\" >" + dr["Title"].ToString() + "</a>"); this.Pub1.AddTD(dr["Starter"].ToString()); this.Pub1.AddTD(dr["ADT"].ToString()); break; } #endregion 显示必要的列. #region 显示出来自定义的字段数据.. foreach (string str in strs) { if (string.IsNullOrEmpty(str) || str.Contains("@PFlowNo") == true) { continue; } foreach (MapAttr attr in attrs) { if (str != attr.KeyOfEn) { continue; } TB tb = new TB(); tb.ID = "TB_" + attr.KeyOfEn + "_" + wk.OID; switch (attr.LGType) { case FieldTypeS.Normal: switch (attr.MyDataType) { case BP.DA.DataType.AppString: if (attr.UIRows == 1) { tb.Text = wk.GetValStringByKey(attr.KeyOfEn); tb.Attributes["style"] = "width: " + attr.UIWidth + "px; text-align: left; height: 15px;padding: 0px;margin: 0px;"; if (attr.UIIsEnable) { tb.CssClass = "TB"; } else { tb.CssClass = "TBReadonly"; } this.Pub1.AddTD(tb); } else { tb.TextMode = TextBoxMode.MultiLine; tb.Text = wk.GetValStringByKey(attr.KeyOfEn); tb.Attributes["style"] = "width: " + attr.UIWidth + "px; text-align: left;padding: 0px;margin: 0px;"; tb.Attributes["maxlength"] = attr.MaxLen.ToString(); tb.Rows = attr.UIRows; if (attr.UIIsEnable) { tb.CssClass = "TBDoc"; } else { tb.CssClass = "TBReadonly"; } this.Pub1.AddTD(tb); } break; case BP.DA.DataType.AppDate: tb.ShowType = TBType.Date; tb.Text = wk.GetValStrByKey(attr.KeyOfEn); if (attr.UIIsEnable) { tb.Attributes["onfocus"] = "WdatePicker();"; } if (attr.UIIsEnable) { tb.Attributes["class"] = "TB"; } else { tb.Attributes["class"] = "TBReadonly"; } tb.Attributes["style"] = "width: " + attr.UIWidth + "px; text-align: left; height: 19px;"; this.Pub1.AddTD(tb); break; case BP.DA.DataType.AppDateTime: tb.ShowType = TBType.DateTime; tb.Text = wk.GetValStrByKey(attr.KeyOfEn); // en.GetValStrByKey(attr.KeyOfEn); if (attr.UIIsEnable) { tb.Attributes["class"] = "TBcalendar"; } else { tb.Attributes["class"] = "TBReadonly"; } if (attr.UIIsEnable) { tb.Attributes["onfocus"] = "WdatePicker({dateFmt:'yyyy-MM-dd HH:mm'});"; } tb.Attributes["style"] = "width: " + attr.UIWidth + "px; text-align: left; height: 19px;"; this.Pub1.AddTD(tb); break; case BP.DA.DataType.AppBoolean: cb = new CheckBox(); //cb.Width = 350; cb.Text = attr.Name; cb.ID = "CB_" + attr.KeyOfEn + "_" + wk.OID; cb.Checked = attr.DefValOfBool; cb.Enabled = attr.UIIsEnable; cb.Checked = wk.GetValBooleanByKey(attr.KeyOfEn); if (cb.Enabled == false) { cb.Enabled = false; } else { //add by dgq 2013-4-9,添加内容修改后的事件 // cb.Attributes["onmousedown"] = "Change('" + attr.FK_MapData + "')"; cb.Enabled = true; } this.Pub1.AddTD(cb); break; case BP.DA.DataType.AppDouble: case BP.DA.DataType.AppFloat: tb.Attributes["style"] = "width: " + attr.GetValStrByKey("UIWidth") + "px; text-align: right; height: 19px;word-break: keep-all;"; tb.Text = attr.DefVal; if (attr.UIIsEnable) { //增加验证 tb.Attributes.Add("onkeyup", @"Change('" + attr.FK_MapData + "');"); tb.Attributes.Add("onblur", @"value=value.replace(/[^-?\d+\.*\d*$]/g,'');TB_ClickNum(this,0);"); tb.Attributes.Add("onClick", "TB_ClickNum(this)"); tb.Attributes["OnKeyPress"] += @"javascript:return VirtyNum(this,'float');"; tb.Attributes["class"] = "TBNum"; } else { tb.Attributes["class"] = "TBReadonly"; } this.Pub1.AddTD(tb); break; case BP.DA.DataType.AppInt: tb.Attributes["style"] = "width: " + attr.GetValStrByKey("UIWidth") + "px; text-align: right; height: 19px;word-break: keep-all;"; tb.Text = attr.DefVal; if (attr.UIIsEnable) { //增加验证 tb.Attributes.Add("onkeyup", @"Change('" + attr.FK_MapData + "');"); tb.Attributes.Add("onblur", @"value=value.replace(/[^-?\d]/g,'');TB_ClickNum(this,0);"); tb.Attributes.Add("onClick", "TB_ClickNum(this)"); tb.Attributes["OnKeyPress"] += @"javascript:return VirtyNum(this,'int');"; tb.Attributes["class"] = "TBNum"; } else { tb.Attributes["class"] = "TBReadonly"; } this.Pub1.AddTD(tb); break; case BP.DA.DataType.AppMoney: if (attr.UIIsEnable) { //增加验证 tb.Attributes.Add("onkeyup", @"Change('" + attr.FK_MapData + "');"); tb.Attributes.Add("onblur", @"value=value.replace(/[^-?\d+\.*\d*$]/g,'');TB_ClickNum(this,'0.00');"); tb.Attributes.Add("onClick", "TB_ClickNum(this)"); tb.Attributes["OnKeyPress"] += @"javascript:return VirtyNum(this,'float');"; tb.Attributes["class"] = "TBNum"; } else { tb.Attributes["class"] = "TBReadonly"; } // tb.ShowType = TBType.Moneny; tb.Text = wk.GetValIntByKey(attr.KeyOfEn).ToString("0.00"); tb.Attributes["style"] = "width: " + attr.GetValStrByKey("UIWidth") + "px; text-align: right; height: 19px;"; this.Pub1.AddTD(tb); break; case BP.DA.DataType.AppRate: if (attr.UIIsEnable) { tb.Attributes["class"] = "TBNum"; } else { tb.Attributes["class"] = "TBReadonly"; } tb.ShowType = TBType.Moneny; tb.Text = wk.GetValMoneyByKey(attr.KeyOfEn).ToString("0.00"); tb.Attributes["style"] = "width: " + attr.GetValStrByKey("UIWidth") + "px; text-align: right; height: 19px;"; this.Pub1.AddTD(tb); break; default: break; } break; case FieldTypeS.Enum: if (attr.UIContralType == UIContralType.DDL) { DDL ddle = new DDL(); ddle.ID = "DDL_" + attr.KeyOfEn + "_" + wk.OID; ddle.BindSysEnum(attr.UIBindKey); ddle.SetSelectItem(wk.GetValIntByKey(attr.KeyOfEn)); ddle.Enabled = attr.UIIsEnable; ddle.Attributes["tabindex"] = attr.Idx.ToString(); if (attr.UIIsEnable) { //add by dgq 2013-4-9,添加内容修改后的事件 ddle.Attributes["onchange"] = "Change('" + attr.FK_MapData + "')"; } // ddle.Enabled = false; this.Pub1.AddTD(ddle); } else { } break; case FieldTypeS.FK: DDL ddl1 = new DDL(); ddl1.ID = "DDL_" + attr.KeyOfEn + "_" + wk.OID; ddl1.Attributes["tabindex"] = attr.Idx.ToString(); if (ddl1.Enabled) { EntitiesNoName ens = attr.HisEntitiesNoName; ens.RetrieveAll(); ddl1.BindEntities(ens); ddl1.SetSelectItem(wk.GetValStrByKey(attr.KeyOfEn)); } else { ddl1.Attributes["style"] = "width: " + attr.UIWidth + "px;height: 19px;"; if (ddl1.Enabled == true) { ddl1.Enabled = false; } ddl1.Attributes["Width"] = attr.UIWidth.ToString(); ddl1.Items.Add(new ListItem(wk.GetValRefTextByKey(attr.KeyOfEn), wk.GetValStrByKey(attr.KeyOfEn))); } ddl1.Enabled = attr.UIIsEnable; this.Pub1.AddTD(ddl1); break; default: break; } } } #endregion 显示出来自定义的字段数据.. this.Pub1.AddTREnd(); } this.Pub1.AddTableEndWithHR(); MapExts mes = new MapExts(this.FK_MapData); #region 处理扩展属性. if (mes.Count != 0) { this.Page.RegisterClientScriptBlock("s81", "<script language='JavaScript' src='/WF/Scripts/jquery-1.4.1.min.js' ></script>"); this.Page.RegisterClientScriptBlock("b81", "<script language='JavaScript' src='/WF/CCForm/MapExt.js' defer='defer' type='text/javascript' ></script>"); this.Pub1.Add("<div id='divinfo' style='width: 155px; position: absolute; color: Lime; display: none;cursor: pointer;align:left'></div>"); this.Page.RegisterClientScriptBlock("dCd", "<script language='JavaScript' src='/DataUser/JSLibData/" + this.FK_MapData + ".js' ></script>"); foreach (Work wk in wks) { foreach (MapExt me in mes) { switch (me.ExtType) { case MapExtXmlList.DDLFullCtrl: // 自动填充. DDL ddlOper = this.Pub1.GetDDLByID("DDL_" + me.AttrOfOper + "_" + wk.OID); if (ddlOper == null) { continue; } ddlOper.Attributes["onchange"] = "DDLFullCtrl(this.value,\'" + ddlOper.ClientID + "\', \'" + me.MyPK + "\')"; break; case MapExtXmlList.ActiveDDL: DDL ddlPerant = this.Pub1.GetDDLByID("DDL_" + me.AttrOfOper + "_" + wk.OID); string val, valC; if (ddlPerant == null || wk.OID < 100) { continue; } #warning 此处需要优化 string ddlC = "ContentPlaceHolder1_Batch1_DDL_" + me.AttrsOfActive + "_" + wk.OID; // ddlPerant.Attributes["onchange"] = " isChange=true; DDLAnsc(this.value, \'" + ddlC + "\', \'" + me.MyPK + "\')"; ddlPerant.Attributes["onchange"] = "DDLAnsc(this.value, \'" + ddlC + "\', \'" + me.MyPK + "\')"; DDL ddlChild = this.Pub1.GetDDLByID("DDL_" + me.AttrsOfActive + "_" + wk.OID); val = ddlPerant.SelectedItemStringVal; if (ddlChild.Items.Count == 0) { valC = wk.GetValStrByKey(me.AttrsOfActive); } else { valC = ddlChild.SelectedItemStringVal; } string mysql = me.Doc.Replace("@Key", val); if (mysql.Contains("@")) { mysql = BP.WF.Glo.DealExp(mysql, wk, null); } ddlChild.Bind(DBAccess.RunSQLReturnTable(mysql), "No", "Name"); if (ddlChild.SetSelectItem(valC) == false) { ddlChild.Items.Insert(0, new ListItem("请选择" + valC, valC)); ddlChild.SelectedIndex = 0; } break; case MapExtXmlList.AutoFullDLL: //自动填充下拉框的范围. DDL ddlFull = this.Pub1.GetDDLByID("DDL_" + me.AttrOfOper + "_" + wk.OID); if (ddlFull == null) { continue; } string valOld = wk.GetValStrByKey(me.AttrOfOper); string fullSQL = me.Doc.Replace("@WebUser.No", WebUser.No); fullSQL = fullSQL.Replace("@WebUser.Name", WebUser.Name); fullSQL = fullSQL.Replace("@WebUser.FK_Dept", WebUser.FK_Dept); fullSQL = fullSQL.Replace("@WebUser.FK_DeptName", WebUser.FK_DeptName); fullSQL = fullSQL.Replace("@Key", this.Request.QueryString["Key"]); if (fullSQL.Contains("@")) { Attrs attrsFull = wk.EnMap.Attrs; foreach (Attr attr in attrsFull) { if (fullSQL.Contains("@") == false) { break; } fullSQL = fullSQL.Replace("@" + attr.Key, wk.GetValStrByKey(attr.Key)); } } ddlFull.Items.Clear(); ddlFull.Bind(DBAccess.RunSQLReturnTable(fullSQL), "No", "Name"); if (ddlFull.SetSelectItem(valOld) == false) { ddlFull.Items.Insert(0, new ListItem("请选择" + valOld, valOld)); ddlFull.SelectedIndex = 0; } // ddlFull.Attributes["onchange"] = " isChange=true;"; break; case MapExtXmlList.TBFullCtrl: // 自动填充. TextBox tbAuto = this.Pub1.GetTextBoxByID("TB_" + me.AttrOfOper + "_" + wk.OID); if (tbAuto == null) { continue; } // tbAuto.Attributes["onkeyup"] = " isChange=true; DoAnscToFillDiv(this,this.value,\'" + tbAuto.ClientID + "\', \'" + me.MyPK + "\');"; tbAuto.Attributes["onkeyup"] = " DoAnscToFillDiv(this,this.value,\'" + tbAuto.ClientID + "\', \'" + me.MyPK + "\');"; tbAuto.Attributes["AUTOCOMPLETE"] = "OFF"; if (me.Tag != "") { /* 处理下拉框的选择范围的问题 */ string[] strsTmp = me.Tag.Split('$'); foreach (string str in strsTmp) { string[] myCtl = str.Split(':'); string ctlID = myCtl[0]; DDL ddlC1 = this.Pub1.GetDDLByID("DDL_" + ctlID + "_" + wk.OID); if (ddlC1 == null) { //me.Tag = ""; // me.Update(); continue; } sql = myCtl[1].Replace("~", "'"); 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("@Key", tbAuto.Text.Trim()); dt = DBAccess.RunSQLReturnTable(sql); string valC1 = ddlC1.SelectedItemStringVal; ddlC1.Items.Clear(); foreach (DataRow dr in dt.Rows) { ddlC1.Items.Add(new ListItem(dr[1].ToString(), dr[0].ToString())); } ddlC1.SetSelectItem(valC1); } } break; case MapExtXmlList.InputCheck: TextBox tbCheck = this.Pub1.GetTextBoxByID("TB_" + me.AttrOfOper + "_" + wk.OID); if (tbCheck != null) { tbCheck.Attributes[me.Tag2] += " rowPK=" + wk.OID + "; " + me.Tag1 + "(this);"; } break; case MapExtXmlList.PopVal: //弹出窗. TB tb = this.Pub1.GetTBByID("TB_" + me.AttrOfOper + "_" + wk.OID); // tb.Attributes["ondblclick"] = " isChange=true; ReturnVal(this,'" + me.Doc + "','sd');"; tb.Attributes["ondblclick"] = " ReturnVal(this,'" + me.Doc + "','sd');"; break; case MapExtXmlList.Link: // 超链接. //TB tb = this.Pub1.GetTBByID("TB_" + me.AttrOfOper + "_" + mydtl.OID); //tb.Attributes["ondblclick"] = " isChange=true; ReturnVal(this,'" + me.Doc + "','sd');"; break; case MapExtXmlList.RegularExpression: //正则表达式,对数据控件处理 TextBox tbExp = this.Pub1.GetTextBoxByID("TB_" + me.AttrOfOper + "_" + wk.OID); if (tbExp == null || me.Tag == "onsubmit") { continue; } //验证输入的正则格式 string regFilter = me.Doc; if (regFilter.LastIndexOf("/g") < 0 && regFilter.LastIndexOf('/') < 0) { regFilter = "'" + regFilter + "'"; } //处理事件 tbExp.Attributes.Add("" + me.Tag + "", "return txtTest_Onkeyup(this," + regFilter + ",'" + me.Tag1 + "')"); //[me.Tag] += "this.value=this.value.replace(" + regFilter + ",'')"; break; default: break; } } } } #endregion 拓展属性 Button btn = new Button(); if (nd.HisBatchRole == BatchRole.Ordinary) { /*如果普通的批处理.*/ btn.CssClass = "Btn"; btn.ID = "Btn_Send"; if (nd.BatchParas_IsSelfUrl == true) { btn.Text = "选择要批量处理的工作"; } else { btn.Text = "批量处理:" + btnLab.SendLab; } btn.Click += new EventHandler(btn_Send_Click); btn.Attributes["onclick"] = " return confirm('您确定要执行吗?');"; this.Pub1.Add(btn); if (btnLab.ReturnEnable == false) { btn = new Button(); btn.CssClass = "Btn"; btn.ID = "Btn_Return"; btn.Text = "批量处理:" + btnLab.ReturnEnable; btn.Click += new EventHandler(btnDelete_Return_Click); btn.Attributes["onclick"] = " return confirm('您确定要执行吗?');"; this.Pub1.Add(btn); } } if (nd.HisBatchRole == BatchRole.Group) { /*如果分组审核?*/ btn = new Button(); btn.CssClass = "Btn"; btn.ID = "Btn_Group"; //btn.Text = btnLab.SendLab; btn.Text = "合卷批复"; btn.Click += new EventHandler(btn_Group_Click); btn.Attributes["onclick"] = " return confirm('您确定要执行吗?');"; this.Pub1.Add(btn); } if (btnLab.ReturnEnable == false) { btn = new Button(); btn.CssClass = "Btn"; btn.ID = "Btn_Return"; btn.Text = "批量处理:" + btnLab.ReturnEnable; btn.Click += new EventHandler(btnDelete_Return_Click); btn.Attributes["onclick"] = " return confirm('您确定要执行吗?');"; this.Pub1.Add(btn); } if (btnLab.DeleteEnable != 0) { btn = new Button(); btn.CssClass = "Btn"; btn.ID = "Btn_Del"; btn.Text = "批量处理:" + btnLab.DeleteLab; btn.Click += new EventHandler(btnDelete_Click); btn.Attributes["onclick"] = " return confirm('您确定要执行吗?');"; this.Pub1.Add(btn); } }
/// <summary> /// view work. /// </summary> public void BindTrack_ViewWork() { string appPath = BP.WF.Glo.CCFlowAppPath;//this.Request.ApplicationPath; Track tk = new Track(this.FK_Flow, this.MyPK); Node nd = new Node(tk.NDFrom); Work wk = nd.HisWork; wk.OID = tk.WorkID; if (wk.RetrieveFromDBSources() == 0) { GERpt rtp = nd.HisFlow.HisGERpt; rtp.OID = this.WorkID; if (rtp.RetrieveFromDBSources() == 0) { AddEasyUiPanelInfo("打开(" + nd.Name + ")错误", "<h4>当前的节点数据已经被删除!</h4>" + "<p style='font-weight:bold'>造成此问题出现的原因如下:<br /><br />" + "1、当前节点数据被非法删除;<br />" + "2、节点数据是退回人与被退回人中间的节点,这部分节点数据查看不支持。</p>", "icon-no"); return; } wk.Row = rtp.Row; } GenerWorkFlow gwf = new GenerWorkFlow(); gwf.WorkID = wk.OID; gwf.RetrieveFromDBSources(); if (nd.HisFlow.IsMD5 && wk.IsPassCheckMD5() == false) { AddEasyUiPanelInfo("打开(" + nd.Name + ")错误", "<h2>当前的节点数据已经被篡改,请报告管理员。</h2>", "icon-no"); return; } this.UCEn1.IsReadonly = true; Frms frms = nd.HisFrms; if (frms.Count == 0) { if (nd.HisFormType == NodeFormType.FreeForm) { /* 自由表单 */ this.UCEn1.Add("<div id=divCCForm >"); this.UCEn1.BindCCForm(wk, "ND" + nd.NodeID, true, 0, false); //, false, false, null); if (wk.WorkEndInfo.Length > 2) { this.UCEn1.Add(wk.WorkEndInfo); } this.UCEn1.Add("</div>"); } if (nd.HisFormType == NodeFormType.FixForm) { /*傻瓜表单*/ this.UCEn1.IsReadonly = true; this.UCEn1.BindColumn4(wk, "ND" + nd.NodeID); //, false, false, null); if (wk.WorkEndInfo.Length > 2) { this.UCEn1.Add(wk.WorkEndInfo); } } BillTemplates bills = new BillTemplates(); bills.Retrieve(BillTemplateAttr.NodeID, nd.NodeID); if (bills.Count >= 1) { string title = ""; foreach (BillTemplate item in bills) { title += "<img src='" + appPath + "WF/Img/Btn/Word.gif' border=0/>" + item.Name + "</a>"; } string urlr = appPath + "WF/WorkOpt/PrintDoc.aspx?FK_Node=" + nd.NodeID + "&FID=" + tk.FID + "&WorkID=" + tk.WorkID + "&FK_Flow=" + tk.FK_Flow; this.UCEn1.Add("<p><a href=\"javascript:WinOpen('" + urlr + "','dsdd');\" />" + title + "</a></p>"); //this.UCEn1.Add("<a href='' target=_blank><img src='/WF/Img/Btn/Word.gif' border=0/>" + bt.Name + "</a>"); } } else { /* 涉及到多个表单的情况...*/ if (nd.HisFormType != NodeFormType.DisableIt) { Frm myfrm = new Frm(); myfrm.No = "ND" + nd.NodeID; myfrm.Name = wk.EnDesc; myfrm.HisFormRunType = (FormRunType)(int)nd.HisFormType; FrmNode fnNode = new FrmNode(); fnNode.FK_Frm = myfrm.No; fnNode.IsEdit = true; fnNode.IsPrint = false; switch (nd.HisFormType) { case NodeFormType.FixForm: fnNode.HisFrmType = FrmType.Column4Frm; break; case NodeFormType.FreeForm: fnNode.HisFrmType = FrmType.FreeFrm; break; case NodeFormType.SelfForm: fnNode.HisFrmType = FrmType.Url; break; default: throw new Exception("出现了未判断的异常。"); } myfrm.HisFrmNode = fnNode; frms.AddEntity(myfrm, 0); } Int64 fid = this.FID; if (this.FID == 0) { fid = tk.WorkID; } if (frms.Count == 1) { /* 如果禁用了节点表单,并且只有一个表单的情况。*/ Frm frm = (Frm)frms[0]; FrmNode fn = frm.HisFrmNode; string src = ""; src = fn.FrmUrl + ".aspx?FK_MapData=" + frm.No + "&FID=" + fid + "&IsEdit=0&IsPrint=0&FK_Node=" + nd.NodeID + "&WorkID=" + tk.WorkID; this.UCEn1.Add("\t\n <DIV id='" + frm.No + "' style='width:" + frm.FrmW + "px; height:" + frm.FrmH + "px;text-align: left;' >"); this.UCEn1.Add("\t\n <iframe ID='F" + frm.No + "' src='" + src + "' frameborder=0 style='position:absolute;width:" + frm.FrmW + "px; height:" + frm.FrmH + "px;text-align: left;' leftMargin='0' topMargin='0' /></iframe>"); this.UCEn1.Add("\t\n </DIV>"); } else { #region 载入相关文件. this.Page.RegisterClientScriptBlock("sg", "<link href='./Style/Frm/Tab.css' rel='stylesheet' type='text/css' />"); this.Page.RegisterClientScriptBlock("s2g4", "<script language='JavaScript' src='./Style/Frm/jquery.min.js' ></script>"); this.Page.RegisterClientScriptBlock("sdf24j", "<script language='JavaScript' src='./Style/Frm/jquery.idTabs.min.js' ></script>"); this.Page.RegisterClientScriptBlock("sdsdf24j", "<script language='JavaScript' src='./Style/Frm/TabClick.js' ></script>"); #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 class='abc' style='background:red;border-color: #800000;border-width: 10px;' >"); foreach (Frm frm in frms) { FrmNode fn = frm.HisFrmNode; string src = ""; src = fn.FrmUrl + ".aspx?FK_MapData=" + frm.No + "&FID=" + fid + "&IsEdit=0&IsPrint=0&FK_Node=" + nd.NodeID + "&WorkID=" + tk.WorkID; this.UCEn1.Add("\t\n<li><a href=\"#" + frm.No + "\" onclick=\"TabClick('" + frm.No + "','" + src + "');\" >" + frm.Name + "</a></li>"); } this.UCEn1.Add("\t\n </ul>"); #endregion 输出标签. #region 输出表单 iframe 内容. foreach (Frm frm in frms) { FrmNode fn = frm.HisFrmNode; this.UCEn1.Add("\t\n <DIV id='" + frm.No + "' style='width:" + frm.FrmW + "px; height:" + frm.FrmH + "px;text-align: left;' >"); string src = "loading.htm"; this.UCEn1.Add("\t\n <iframe ID='F" + frm.No + "' src='" + src + "' frameborder=0 style='position:absolute;width:" + frm.FrmW + "px; height:" + frm.FrmH + "px;text-align: left;' leftMargin='0' topMargin='0' /></iframe>"); this.UCEn1.Add("\t\n </DIV>"); } #endregion 输出表单 iframe 内容. this.UCEn1.Add("\t\n</div>"); // end usual2 // 设置选择的默认值. this.UCEn1.Add("\t\n<script type='text/javascript'>"); this.UCEn1.Add("\t\n $(\"#usual2 ul\").idTabs(\"" + frms[0].No + "\");"); this.UCEn1.Add("\t\n</script>"); } } }
/// <summary> /// 打开工作处理器,仅仅查看,不能修改。 /// </summary> public void BindTrack_ViewWorkForm() { string appPath = this.Request.ApplicationPath; Node nd = null; Track tk = new Track(); tk.FK_Flow = this.FK_Flow; tk.NDFrom = this.FK_Node; tk.WorkID = this.WorkID; if (this.MyPK != null) { tk = new Track(this.FK_Flow, this.MyPK); nd = new Node(tk.NDFrom); } else { nd = new Node(this.FK_Node); } Flow fl = new Flow(this.FK_Flow); Int64 workid = 0; if (nd.HisRunModel == RunModel.SubThread) { workid = tk.FID; } else { workid = tk.WorkID; } Int64 fid = this.FID; if (this.FID == 0) { fid = tk.FID; } DataTable ndrpt = DBAccess.RunSQLReturnTable("SELECT PFlowNo,PWorkID FROM " + fl.PTable + " WHERE OID=" + workid); string urlExt = "&PFlowNo=" + ndrpt.Rows[0]["PFlowNo"] + "&PWorkID=" + ndrpt.Rows[0]["PWorkID"] + "&IsToobar=0&IsHidden=true"; urlExt += "&From=CCFlow&TruckKey=" + tk.GetValStrByKey("MyPK"); if (nd.HisFormType == NodeFormType.SDKForm || nd.HisFormType == NodeFormType.SelfForm) { if (nd.FormUrl.Contains("?")) { this.Response.Redirect(nd.FormUrl + "&WorkID=" + tk.WorkID + "&FK_Node=" + nd.NodeID + "&FK_Flow=" + nd.FK_Flow + "&FID=" + fid + urlExt, true); } else { this.Response.Redirect(nd.FormUrl + "?WorkID=" + tk.WorkID + "&FK_Node=" + nd.NodeID + "&FK_Flow=" + nd.FK_Flow + "&FID=" + fid + urlExt, true); } if (nd.HisFormType == NodeFormType.SDKForm) { if (nd.FormUrl.Contains("?")) { this.Response.Redirect(nd.FormUrl + "&WorkID=" + tk.WorkID + "&FK_Node=" + nd.NodeID + "&FK_Flow=" + nd.FK_Flow + "&FID=" + fid + urlExt, true); } else { this.Response.Redirect(nd.FormUrl + "?WorkID=" + tk.WorkID + "&FK_Node=" + nd.NodeID + "&FK_Flow=" + nd.FK_Flow + "&FID=" + fid + urlExt, true); } return; } this.Response.Redirect(nd.FormUrl + "&WorkID=" + tk.WorkID + "&FK_Node=" + nd.NodeID + "&FK_Flow=" + nd.FK_Flow + "&FID=" + fid + urlExt, true); return; } Work wk = nd.HisWork; wk.OID = tk.WorkID; if (wk.RetrieveFromDBSources() == 0) { GERpt rtp = nd.HisFlow.HisGERpt; rtp.OID = this.WorkID; if (rtp.RetrieveFromDBSources() == 0) { this.UCEn1.AddFieldSet("打开(" + nd.Name + ")错误"); this.UCEn1.AddH1("当前的节点数据已经被删除!!!<br> 造成此问题出现的原因如下。"); this.UCEn1.AddBR("1、当前节点数据被非法删除。"); this.UCEn1.AddBR("2、节点数据是退回人与被退回人中间的节点,这部分节点数据查看不支持。"); this.UCEn1.AddH1("技术信息:表" + wk.EnMap.PhysicsTable + " WorkID=" + this.WorkID); this.UCEn1.AddFieldSetEnd(); return; } wk.Row = rtp.Row; } GenerWorkFlow gwf = new GenerWorkFlow(); gwf.WorkID = wk.OID; if (nd.HisFlow.IsMD5 && wk.IsPassCheckMD5() == false) { this.UCEn1.AddFieldSet("打开(" + nd.Name + ")错误"); this.UCEn1.AddH1("当前的节点数据已经被篡改,请报告管理员。"); this.UCEn1.AddFieldSetEnd(); return; } this.InitToolbar(false, appPath); this.UCEn1.IsReadonly = true; Frms frms = nd.HisFrms; if (frms.Count == 0) { if (nd.HisFormType == NodeFormType.FreeForm) { MapData map = new MapData(nd.NodeFrmID); /* 自由表单 */ Width = map.MaxRight + map.MaxLeft * 2 + 10 + ""; if (float.Parse(Width) < 500) { Width = "900"; } Height = map.MaxEnd + ""; BtnLab btnLab = new BtnLab(FK_Node); BtnWord = btnLab.WebOfficeEnable + ""; this.UCEn1.Add("<div id=divCCForm style='width:" + Width + "px;height:" + Height + "px' >"); this.UCEn1.BindCCForm(wk, nd.NodeFrmID, true, 0, false); //, false, false, null); this.UCEn1.Add("</div>"); } if (nd.HisFormType == NodeFormType.FixForm) { MapData map = new MapData(nd.NodeFrmID); if (map.TableWidth.Contains("px")) { Width = map.TableWidth.Replace("px", ""); } else { Width = map.TableWidth + ""; } if (map.TableWidth.Equals("100%")) { Width = "900"; } this.UCEn1.Add("<div id=divCCForm style='width:" + Width + "px;height:" + map.FrmH + "px;overflow-x:scroll;' >"); /*傻瓜表单*/ this.UCEn1.IsReadonly = true; this.UCEn1.BindColumn4(wk, nd.NodeFrmID); //, false, false, null); //if (wk.WorkEndInfo.Length > 2) // this.UCEn1.Add(wk.WorkEndInfo); this.UCEn1.Add("</div>"); } BillTemplates bills = new BillTemplates(); bills.Retrieve(BillTemplateAttr.NodeID, nd.NodeID); if (bills.Count >= 1) { string title = ""; foreach (BillTemplate item in bills) { title += "<img src='/WF/Img/Btn/Word.gif' border=0/>" + item.Name + "</a>"; } string urlr = appPath + "WF/WorkOpt/PrintDoc.aspx?FK_Node=" + nd.NodeID + "&FID=" + fid + "&WorkID=" + tk.WorkID + "&FK_Flow=" + nd.FK_Flow; this.UCEn1.Add("<p><a href=\"javascript:WinOpen('" + urlr + "','dsdd');\" />" + title + "</a></p>"); //this.UCEn1.Add("<a href='' target=_blank><img src='/WF/Img/Btn/Word.gif' border=0/>" + bt.Name + "</a>"); } } else { /* 涉及到多个表单的情况...*/ if (nd.HisFormType == NodeFormType.SheetTree) { Response.Redirect(appPath + "WF/FlowFormTree/FlowFormTreeView.aspx?WorkID=" + tk.WorkID + "&FK_Flow=" + nd.FK_Flow + "&FID=" + fid + "&FK_Node=" + nd.NodeID + "&CWorkID=" + this.CWorkID); } else if (nd.HisFormType != NodeFormType.DisableIt) { Frm myfrm = new Frm(); myfrm.No = "ND" + nd.NodeID; myfrm.Name = wk.EnDesc; myfrm.HisFormRunType = (FormRunType)(int)nd.HisFormType; FrmNode fnNode = new FrmNode(); fnNode.FK_Frm = myfrm.No; fnNode.IsEdit = true; fnNode.IsPrint = false; switch (nd.HisFormType) { case NodeFormType.FixForm: fnNode.HisFrmType = FrmType.Column4Frm; break; case NodeFormType.FreeForm: fnNode.HisFrmType = FrmType.FreeFrm; break; case NodeFormType.SelfForm: fnNode.HisFrmType = FrmType.Url; break; default: throw new Exception("出现了未判断的异常。"); } myfrm.HisFrmNode = fnNode; frms.AddEntity(myfrm, 0); } if (frms.Count == 1) { /* 如果禁用了节点表单,并且只有一个表单的情况。*/ Frm frm = (Frm)frms[0]; FrmNode fn = frm.HisFrmNode; string src = ""; src = fn.FrmUrl + ".aspx?FK_MapData=" + frm.No + "&FID=" + fid + "&IsEdit=0&IsPrint=0&FK_Node=" + nd.NodeID + "&WorkID=" + tk.WorkID + "&CWorkID=" + this.CWorkID; this.UCEn1.Add("\t\n <DIV id='" + frm.No + "' style='width:" + frm.FrmW + "px; height:" + frm.FrmH + "px;text-align: left; background-color:white;margin:0;padding:0;' >"); this.UCEn1.Add("\t\n <iframe ID='F" + frm.No + "' src='" + src + "' frameborder=0 style='margin:0;padding:0;width:" + frm.FrmW + "px; height:" + frm.FrmH + "px;text-align: left;' leftMargin='0' topMargin='0' /></iframe>"); this.UCEn1.Add("\t\n </DIV>"); } else { Frm frmFirst = null; foreach (Frm frm in frms) { if (frmFirst == null) { frmFirst = frm; } if (frmFirst.FrmW < frm.FrmW) { frmFirst = frm; } } #region 载入相关文件. this.Page.RegisterClientScriptBlock("sg", "<link href='./Style/Frm/Tab.css' rel='stylesheet' type='text/css' />"); this.Page.RegisterClientScriptBlock("s2g4", "<script language='JavaScript' src='./Style/Frm/jquery.min.js' ></script>"); this.Page.RegisterClientScriptBlock("sdf24j", "<script language='JavaScript' src='./Style/Frm/jquery.idTabs.min.js' ></script>"); this.Page.RegisterClientScriptBlock("sdsdf24j", "<script language='JavaScript' src='./Style/Frm/TabClick.js' ></script>"); #endregion 载入相关文件. this.UCEn1.Clear(); this.UCEn1.Add("<div style='clear:both' ></div>"); // this.UCEn1.Add("\t\n<div id='usual2' class='usual' style='width:" + frmFirst.FrmW + "px;height:auto;margin:0 auto;background-color:white;'>"); //begain. #region 输出标签. this.UCEn1.Add("\t\n <ul class='abc' style='background:red;border-color: #800000;border-width: 10px;' >"); foreach (Frm frm in frms) { FrmNode fn = frm.HisFrmNode; string src = ""; src = fn.FrmUrl + ".aspx?FK_MapData=" + frm.No + "&FID=" + fid + "&IsEdit=0&IsPrint=0&FK_Node=" + nd.NodeID + "&WorkID=" + tk.WorkID + "&CWorkID=" + this.CWorkID + "&FK_Flow=" + this.FK_Flow;//edited by liuxc,2015-6-17 this.UCEn1.Add("\t\n<li><a href=\"#" + frm.No + "\" onclick=\"TabClick('" + frm.No + "','" + src + "');\" >" + frm.Name + "</a></li>"); } this.UCEn1.Add("\t\n </ul>"); #endregion 输出标签. #region 输出表单 iframe 内容. foreach (Frm frm in frms) { FrmNode fn = frm.HisFrmNode; this.UCEn1.Add("\t\n <DIV id='" + frm.No + "' style='width:" + frm.FrmW + "px; height:" + frm.FrmH + "px;text-align: left;margin:0px;padding:0px;' >"); string src = "loading.htm"; this.UCEn1.Add("\t\n <iframe ID='F" + frm.No + "' src='" + src + "' frameborder=0 style='margin:0px;padding:0px;width:" + frm.FrmW + "px; height:" + frm.FrmH + "px;text-align: left;' leftMargin='0' topMargin='0' /></iframe>"); this.UCEn1.Add("\t\n </DIV>"); } #endregion 输出表单 iframe 内容. this.UCEn1.Add("\t\n</div>"); // end usual2 // 设置选择的默认值. this.UCEn1.Add("\t\n<script type='text/javascript'>"); this.UCEn1.Add("\t\n $(\"#usual2 ul\").idTabs(\"" + frms[0].No + "\");"); this.UCEn1.Add("\t\n</script>"); } } }
/// <summary> /// 说明 :此测试针对于演示环境中的 001 流程编写的单元测试代码。 /// 涉及到了: 创建,发送,撤销,方向条件、退回等功能。 /// </summary> public override void Do() { if (Glo.IsEnableDraft == false) { throw new Exception("@此测试需要在Web.config 的 IsEnableDraft = 1 的状态下才能测试它。"); } string fk_flow = "032"; string userNo = "zhanghaicheng"; Flow fl = new Flow(fk_flow); // zhoutianjiao 登录. BP.WF.Dev2Interface.Port_Login(userNo); //创建空白工作. Int64 workid = BP.WF.Dev2Interface.Node_CreateBlankWork(fl.No, null, null, WebUser.No, null, 0, null); //执行保存. BP.WF.Dev2Interface.Node_SaveWork(fl.No, 3201, workid); #region 检查保存的草稿数据是否完整。 GERpt rpt = fl.HisFlowData; rpt.OID = workid; rpt.RetrieveFromDBSources(); if (rpt.WFState != WFState.Blank) { throw new Exception("@保存错误,此 GERpt 应该是 Blank 状态,现在是:" + rpt.WFState); } bool isHave = false; DataTable dt = BP.WF.Dev2Interface.DB_GenerDraftDataTable(fl.No); foreach (DataRow dr in dt.Rows) { if (dr["OID"].ToString() == workid.ToString()) { isHave = true; break; } } if (isHave == true) { throw new Exception("@不应该找到草稿.。"); } #endregion //设置成草稿. BP.WF.Dev2Interface.Node_SetDraft(fl.No, workid); #region 检查保存的草稿数据是否完整。 rpt = fl.HisFlowData; rpt.OID = workid; rpt.RetrieveFromDBSources(); if (rpt.WFState != WFState.Draft && Glo.IsEnableDraft) { throw new Exception("@,此 GERpt 应该是 Draft 状态,现在是:" + rpt.WFState); } isHave = false; dt = BP.WF.Dev2Interface.DB_GenerDraftDataTable(fl.No); foreach (DataRow dr in dt.Rows) { if (dr["OID"].ToString() == workid.ToString()) { isHave = true; break; } } if (isHave == false) { throw new Exception("@没有从接口里找到草稿。"); } #endregion }
private void LoadMenu(bool isMenu) { BtnLab btnLab = new BtnLab(this.FK_Node); bool isCompleate = false; BP.WF.Node node = new BP.WF.Node(FK_Node); try { WorkFlow workFlow = new WorkFlow(node.FK_Flow, WorkID); isCompleate = workFlow.IsComplete; } catch (Exception) { try { Flow fl = new Flow(node.FK_Flow); GERpt rpt = fl.HisGERpt; rpt.OID = WorkID; rpt.Retrieve(); if (rpt != null) { if (rpt.WFState == WFState.Complete) { isCompleate = true; } } } catch (Exception ex) { } } if (isMenu && !isCompleate) { if (btnLab.OfficeMarksEnable) { divMenu.InnerHtml = "查看留痕:<select id='marks' onchange='ShowUserName()' style='width: 100px'><option value='显示留痕'>显示留痕</option><option value='隐藏留痕'>隐藏留痕</option><select>"; } if (btnLab.OfficeOpenEnable) { AddBtn("openFile", btnLab.OfficeOpenLab, "OpenFile"); } if (btnLab.OfficeOpenTemplateEnable) { AddBtn("openTempLate", btnLab.OfficeOpenTemplateLab, "OpenTempLate"); } if (btnLab.OfficeSaveEnable) { AddBtn("saveFile", btnLab.OfficeSaveLab, "saveOffice"); } if (btnLab.OfficeAcceptEnable) { AddBtn("accept", btnLab.OfficeAcceptLab, "acceptOffice"); } if (btnLab.OfficeRefuseEnable) { AddBtn("refuse", btnLab.OfficeRefuseLab, "refuseOffice"); } if (btnLab.OfficeOverEnable) { AddBtn("over", btnLab.OfficeOverLab, "overOffice"); } if (btnLab.OfficeSealEnable) { AddBtn("seal", btnLab.OfficeSealLab, "sealOffice"); } if (btnLab.OfficeInsertFlowEnable) { AddBtn("flow", btnLab.OfficeInsertFlowLab, "InsertFlow"); } if (btnLab.OfficeDownEnable) { AddBtn("download", btnLab.OfficeDownLab, "DownLoad"); } if (btnLab.OfficeIsMarks) { IsMarks = true; } if (btnLab.OfficeNodeInfo) { IsCheckInfo = true; } } // OfficeTemplate = btnLab.OfficeTemplate; IsSavePDF = btnLab.OfficeReSavePDF; if (!string.IsNullOrEmpty(this.MarkName)) { AddBtn("ViewMarks", "文档痕迹", "ViewMark"); } if (isMenu) { LoadAttachment(); } }
protected void Page_Load(object sender, EventArgs e) { //WebUser.SignInOfGener(new BP.Port.Emp("zhoupeng")); string type = Request["action"]; if (string.IsNullOrEmpty(type)) { InitOffice(); } else { if (type.Equals("LoadFile")) { LoadFile(); return; } if (type.Equals("SaveFile")) { SaveFile(); return; } InitOffice(); } var root = SystemConfig.PathOfDataUser + "\\FrmOfficeTemplate\\" + this.FK_Flow + "\\"; var rootInfo = new DirectoryInfo(root); if (!rootInfo.Exists) { rootInfo.Create(); } var docFileName = "Rpt" + this.FK_Flow + "_" + this.WorkID + "_" + this.FK_Node; var docDirName = this.FK_Flow + "\\" + this.WorkID + "\\"; var files = rootInfo.GetFiles("Rpt" + this.FK_Flow + "_" + this.FK_Node + ".*"); FileInfo tmpFile = null; FileInfo wordFile = null; var pathDir = SystemConfig.PathOfDataUser + @"\FrmOfficeFiles\" + docDirName; if (!Directory.Exists(pathDir)) { Directory.CreateDirectory(pathDir); } // 判断是否有这个数据文件. if (files.Length == 0) { Response.Write("<h3>Word表单模板文件不存在,请确认已经上传Word表单模板</h3>"); Response.End(); return; } tmpFile = files[0]; wordFile = new FileInfo(pathDir + "\\" + docFileName + tmpFile.Extension); if (wordFile.Exists == false) { IsFirst = true; File.Copy(tmpFile.FullName, wordFile.FullName); } else { IsFirst = false; } //装载数据. var rptName = "ND" + int.Parse(this.FK_Flow) + "Rpt"; var rpt = new GERpt(rptName); rpt.OID = int.Parse(WorkID); if (rpt.RetrieveFromDBSources() == 0) { Response.Write("<h3>" + rptName + "中不存在WorkID=" + WorkID + "的数据</h3>"); return; } var attrs = new MapAttrs(rptName); this.LoadFrmData(attrs, rpt); //替换掉 word 里面的数据. fileName.Text = string.Format(@"\{0}{1}{2}", docDirName, docFileName, wordFile.Extension); fileType.Text = wordFile.Extension.TrimStart('.'); }
private void InitOffice(bool isMenu) { bool isCompleate = false; BP.WF.Node node = new BP.WF.Node(); node.NodeID = int.Parse(this.FK_Node); node.RetrieveFromDBSources(); try { WorkFlow workFlow = new WorkFlow(node.FK_Flow, Int64.Parse(PKVal)); isCompleate = workFlow.IsComplete; } catch (Exception) { try { Flow fl = new Flow(node.FK_Flow); GERpt rpt = fl.HisGERpt; rpt.OID = Int64.Parse(PKVal); rpt.Retrieve(); if (rpt != null) { if (rpt.WFState == WFState.Complete) { isCompleate = true; } } } catch { } } if (!isCompleate) { try { isCompleate = !BP.WF.Dev2Interface.Flow_IsCanDoCurrentWork(node.FK_Flow, node.NodeID, Int64.Parse(PKVal), WebUser.No); //WorkFlow workFlow = new WorkFlow(node.FK_Flow, Int64.Parse(PKVal)); //isCompleate = !workFlow.IsCanDoCurrentWork(WebUser.No); } catch { } } FrmAttachment attachment = new FrmAttachment(); int result = 0; //表单编号与节点不为空 if (this.FK_MapData != null && this.FK_Node != null) { BP.En.QueryObject objInfo = new BP.En.QueryObject(attachment); objInfo.AddWhere(FrmAttachmentAttr.FK_MapData, this.FK_MapData); objInfo.addAnd(); objInfo.AddWhere(FrmAttachmentAttr.FK_Node, this.FK_Node); objInfo.addAnd(); objInfo.AddWhere(FrmAttachmentAttr.NoOfObj, this.NoOfObj); result = objInfo.DoQuery(); //result = attachment.Retrieve(FrmAttachmentAttr.FK_MapData, this.FK_MapData, // FrmAttachmentAttr.FK_Node, this.FK_Node, FrmAttachmentAttr.NoOfObj, this.DelPKVal); } if (result == 0) /*如果没有定义,就获取默认的.*/ { attachment.MyPK = this.FK_FrmAttachment; attachment.Retrieve(); } if (!isCompleate) { if (attachment.IsWoEnableReadonly) { ReadOnly = true; } if (attachment.IsWoEnableCheck) { IsCheck = true; } IsMarks = attachment.IsWoEnableMarks; } else { if (attachment.IsWoEnableReadonly) { ReadOnly = true; } } if (isMenu && !isCompleate) { #region 初始化按钮 if (attachment.IsWoEnableViewKeepMark) { divMenu.InnerHtml = "<select id='marks' onchange='ShowUserName()' style='width: 100px'><option value='1'>显示留痕</option><option value='2'>隐藏留痕</option><select>"; } if (attachment.IsWoEnableTemplete) { AddBtn("openTempLate", "打开模板", "OpenTempLate"); } if (attachment.IsWoEnableSave) { AddBtn("saveFile", "保存", "saveOffice"); } if (attachment.IsWoEnableRevise) { AddBtn("accept", "接受修订", "acceptOffice"); AddBtn("refuse", "拒绝修订", "refuseOffice"); } if (attachment.IsWoEnableOver) { AddBtn("over", "套红文件", "overOffice"); } if (attachment.IsWoEnableSeal) { AddBtn("seal", "签章", "sealOffice"); } if (attachment.IsWoEnableInsertFlow) { AddBtn("flow", "插入流程图", "InsertFlow"); } if (attachment.IsWoEnableInsertFlow) { AddBtn("fegnxian", "插入风险点", "InsertFengXian"); } #endregion } #region 初始化文件 FrmAttachmentDB downDB = new FrmAttachmentDB(); downDB.MyPK = this.DelPKVal; downDB.Retrieve(); fileName.Text = downDB.FileName; fileType.Text = downDB.FileExts; RealFileName = downDB.FileName; FileFullName = downDB.FileFullName; FileSavePath = attachment.SaveTo; #endregion }
public string ImpData_Done() { HttpFileCollection files = context.Request.Files; if (files.Count == 0) { return("err@请选择要导入的数据信息。"); } string errInfo = ""; string ext = ".xls"; string fileName = System.IO.Path.GetFileName(files[0].FileName); if (fileName.Contains(".xlsx")) { ext = ".xlsx"; } //设置文件名 string fileNewName = DateTime.Now.ToString("yyyyMMddHHmmssff") + ext; //文件存放路径 string filePath = BP.Sys.SystemConfig.PathOfTemp + "\\" + fileNewName; files[0].SaveAs(filePath); //从excel里面获得数据表. DataTable dt = BP.DA.DBLoad.ReadExcelFileToDataTable(filePath); //删除临时文件 System.IO.File.Delete(filePath); if (dt.Rows.Count == 0) { return("err@无导入的数据"); } //获得entity. FrmBill bill = new FrmBill(this.FrmID); GEEntitys rpts = new GEEntitys(this.FrmID); GERpt en = new GERpt(this.FrmID); string noColName = ""; //实体列的编号名称. string nameColName = ""; //实体列的名字名称. BP.En.Map map = en.EnMap; Attr attr = map.GetAttrByKey("BillNo"); noColName = attr.Desc; // String codeStruct = bill.EnMap.CodeStruct; attr = map.GetAttrByKey("Title"); nameColName = attr.Desc; // //定义属性. Attrs attrs = map.Attrs; int impWay = this.GetRequestValInt("ImpWay"); #region 清空方式导入. //清空方式导入. int count = 0; //导入的行数 int changeCount = 0; //更新的行数 String successInfo = ""; if (impWay == 0) { rpts.ClearTable(); foreach (DataRow dr in dt.Rows) { string no = dr[noColName].ToString(); string name = dr[nameColName].ToString(); //判断是否是自增序列,序列的格式 if (!DataType.IsNullOrEmpty(codeStruct)) { no = no.PadLeft(System.Int32.Parse(codeStruct), '0'); } GERpt myen = new BP.WF.Data.GERpt(this.FrmID); myen.SetValByKey("BillNo", no); if (myen.Retrieve("BillNo", no) == 1) { errInfo += "err@编号[" + no + "][" + name + "]重复."; continue; } //给实体赋值 errInfo += SetEntityAttrVal(no, dr, attrs, myen, dt, 0); count++; successInfo += " <span>" + noColName + "为" + no + "," + nameColName + "为" + name + "的导入成功</span><br/>"; } } #endregion 清空方式导入. #region 更新方式导入 if (impWay == 1 || impWay == 2) { foreach (DataRow dr in dt.Rows) { string no = dr[noColName].ToString(); string name = dr[nameColName].ToString(); //判断是否是自增序列,序列的格式 if (!DataType.IsNullOrEmpty(codeStruct)) { no = no.PadLeft(System.Int32.Parse(codeStruct), '0'); } GERpt myen = rpts.GetNewEntity as GERpt; myen.SetValByKey("BillNo", no); if (myen.Retrieve("BillNo", no) == 1) { //给实体赋值 errInfo += SetEntityAttrVal(no, dr, attrs, myen, dt, 1); changeCount++; successInfo += " <span>" + noColName + "为" + no + "," + nameColName + "为" + name + "的更新成功</span><br/>"; continue; } //给实体赋值 errInfo += SetEntityAttrVal(no, dr, attrs, myen, dt, 0); count++; successInfo += " <span>" + noColName + "为" + no + "," + nameColName + "为" + name + "的导入成功</span><br/>"; } } #endregion return("errInfo=" + errInfo + "@Split" + "count=" + count + "@Split" + "successInfo=" + successInfo + "@Split" + "changeCount=" + changeCount); }
private string SetEntityAttrVal(string no, DataRow dr, Attrs attrs, GERpt en, DataTable dt, int saveType) { if (saveType == 0) { string OID = MyBill_CreateBlankDictID(); en.OID = long.Parse(OID); en.RetrieveFromDBSources(); } string errInfo = ""; //按照属性赋值. foreach (Attr item in attrs) { if (item.Key == "BillNo") { en.SetValByKey(item.Key, no); continue; } if (item.Key == "Title") { en.SetValByKey(item.Key, dr[item.Desc].ToString()); continue; } if (dt.Columns.Contains(item.Desc) == false) { continue; } //枚举处理. if (item.MyFieldType == FieldType.Enum) { string val = dr[item.Desc].ToString(); SysEnum se = new SysEnum(); int i = se.Retrieve(SysEnumAttr.EnumKey, item.UIBindKey, SysEnumAttr.Lab, val); if (i == 0) { errInfo += "err@枚举[" + item.Key + "][" + item.Desc + "],值[" + val + "]不存在."; continue; } en.SetValByKey(item.Key, se.IntKey); continue; } //外键处理. if (item.MyFieldType == FieldType.FK) { string val = dr[item.Desc].ToString(); Entity attrEn = item.HisFKEn; int i = attrEn.Retrieve("Name", val); if (i == 0) { errInfo += "err@外键[" + item.Key + "][" + item.Desc + "],值[" + val + "]不存在."; continue; } if (i != 1) { errInfo += "err@外键[" + item.Key + "][" + item.Desc + "],值[" + val + "]重复.."; continue; } //把编号值给他. en.SetValByKey(item.Key, attrEn.GetValByKey("No")); continue; } //boolen类型的处理.. if (item.MyDataType == DataType.AppBoolean) { string val = dr[item.Desc].ToString(); if (val == "是" || val == "有") { en.SetValByKey(item.Key, 1); } else { en.SetValByKey(item.Key, 0); } continue; } string myval = dr[item.Desc].ToString(); en.SetValByKey(item.Key, myval); } try { en.Update(); } catch (Exception ex) { return("err@" + ex.Message); } return(errInfo); }